/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums-Check.h.zapt

#pragma once

#include <clusters/PowerSource/Enums.h>

namespace chip {
namespace app {
namespace Clusters {
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatApprovedChemistryEnum val)
{
    using EnumType = PowerSource::BatApprovedChemistryEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kAlkaline:
    case EnumType::kLithiumCarbonFluoride:
    case EnumType::kLithiumChromiumOxide:
    case EnumType::kLithiumCopperOxide:
    case EnumType::kLithiumIronDisulfide:
    case EnumType::kLithiumManganeseDioxide:
    case EnumType::kLithiumThionylChloride:
    case EnumType::kMagnesium:
    case EnumType::kMercuryOxide:
    case EnumType::kNickelOxyhydride:
    case EnumType::kSilverOxide:
    case EnumType::kZincAir:
    case EnumType::kZincCarbon:
    case EnumType::kZincChloride:
    case EnumType::kZincManganeseDioxide:
    case EnumType::kLeadAcid:
    case EnumType::kLithiumCobaltOxide:
    case EnumType::kLithiumIon:
    case EnumType::kLithiumIonPolymer:
    case EnumType::kLithiumIronPhosphate:
    case EnumType::kLithiumSulfur:
    case EnumType::kLithiumTitanate:
    case EnumType::kNickelCadmium:
    case EnumType::kNickelHydrogen:
    case EnumType::kNickelIron:
    case EnumType::kNickelMetalHydride:
    case EnumType::kNickelZinc:
    case EnumType::kSilverZinc:
    case EnumType::kSodiumIon:
    case EnumType::kSodiumSulfur:
    case EnumType::kZincBromide:
    case EnumType::kZincCerium:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeFaultEnum val)
{
    using EnumType = PowerSource::BatChargeFaultEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kAmbientTooHot:
    case EnumType::kAmbientTooCold:
    case EnumType::kBatteryTooHot:
    case EnumType::kBatteryTooCold:
    case EnumType::kBatteryAbsent:
    case EnumType::kBatteryOverVoltage:
    case EnumType::kBatteryUnderVoltage:
    case EnumType::kChargerOverVoltage:
    case EnumType::kChargerUnderVoltage:
    case EnumType::kSafetyTimeout:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeLevelEnum val)
{
    using EnumType = PowerSource::BatChargeLevelEnum;
    switch (val)
    {
    case EnumType::kOk:
    case EnumType::kWarning:
    case EnumType::kCritical:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatChargeStateEnum val)
{
    using EnumType = PowerSource::BatChargeStateEnum;
    switch (val)
    {
    case EnumType::kUnknown:
    case EnumType::kIsCharging:
    case EnumType::kIsAtFullCharge:
    case EnumType::kIsNotCharging:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatCommonDesignationEnum val)
{
    using EnumType = PowerSource::BatCommonDesignationEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kAaa:
    case EnumType::kAa:
    case EnumType::kC:
    case EnumType::kD:
    case EnumType::k4v5:
    case EnumType::k6v0:
    case EnumType::k9v0:
    case EnumType::k12aa:
    case EnumType::kAaaa:
    case EnumType::kA:
    case EnumType::kB:
    case EnumType::kF:
    case EnumType::kN:
    case EnumType::kNo6:
    case EnumType::kSubC:
    case EnumType::kA23:
    case EnumType::kA27:
    case EnumType::kBa5800:
    case EnumType::kDuplex:
    case EnumType::k4sr44:
    case EnumType::k523:
    case EnumType::k531:
    case EnumType::k15v0:
    case EnumType::k22v5:
    case EnumType::k30v0:
    case EnumType::k45v0:
    case EnumType::k67v5:
    case EnumType::kJ:
    case EnumType::kCr123a:
    case EnumType::kCr2:
    case EnumType::k2cr5:
    case EnumType::kCrP2:
    case EnumType::kCrV3:
    case EnumType::kSr41:
    case EnumType::kSr43:
    case EnumType::kSr44:
    case EnumType::kSr45:
    case EnumType::kSr48:
    case EnumType::kSr54:
    case EnumType::kSr55:
    case EnumType::kSr57:
    case EnumType::kSr58:
    case EnumType::kSr59:
    case EnumType::kSr60:
    case EnumType::kSr63:
    case EnumType::kSr64:
    case EnumType::kSr65:
    case EnumType::kSr66:
    case EnumType::kSr67:
    case EnumType::kSr68:
    case EnumType::kSr69:
    case EnumType::kSr516:
    case EnumType::kSr731:
    case EnumType::kSr712:
    case EnumType::kLr932:
    case EnumType::kA5:
    case EnumType::kA10:
    case EnumType::kA13:
    case EnumType::kA312:
    case EnumType::kA675:
    case EnumType::kAc41e:
    case EnumType::k10180:
    case EnumType::k10280:
    case EnumType::k10440:
    case EnumType::k14250:
    case EnumType::k14430:
    case EnumType::k14500:
    case EnumType::k14650:
    case EnumType::k15270:
    case EnumType::k16340:
    case EnumType::kRcr123a:
    case EnumType::k17500:
    case EnumType::k17670:
    case EnumType::k18350:
    case EnumType::k18500:
    case EnumType::k18650:
    case EnumType::k19670:
    case EnumType::k25500:
    case EnumType::k26650:
    case EnumType::k32600:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatFaultEnum val)
{
    using EnumType = PowerSource::BatFaultEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kOverTemp:
    case EnumType::kUnderTemp:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::BatReplaceabilityEnum val)
{
    using EnumType = PowerSource::BatReplaceabilityEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kNotReplaceable:
    case EnumType::kUserReplaceable:
    case EnumType::kFactoryReplaceable:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::PowerSourceStatusEnum val)
{
    using EnumType = PowerSource::PowerSourceStatusEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kActive:
    case EnumType::kStandby:
    case EnumType::kUnavailable:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::WiredCurrentTypeEnum val)
{
    using EnumType = PowerSource::WiredCurrentTypeEnum;
    switch (val)
    {
    case EnumType::kAc:
    case EnumType::kDc:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
static auto __attribute__((unused)) EnsureKnownEnumValue(PowerSource::WiredFaultEnum val)
{
    using EnumType = PowerSource::WiredFaultEnum;
    switch (val)
    {
    case EnumType::kUnspecified:
    case EnumType::kOverVoltage:
    case EnumType::kUnderVoltage:
        return val;
    default:
        return EnumType::kUnknownEnumValue;
    }
}
} // namespace Clusters
} // namespace app
} // namespace chip
